package com.piggy.logi.sys.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.web.domain.BaseTenantEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 运单信息编辑对象 logi_waybill
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("运单信息编辑对象")
public class LogiWaybillEditBo extends BaseTenantEntity {

    @ApiModelProperty("运单Id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long waybillId;

    @ApiModelProperty(value = "原运单id")
    private String oldOutCode;

    @ApiModelProperty(value = "退单(0运单1退单)")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer refund = 0;

    @ApiModelProperty("运单模式（0默认模式1完整模式）")
    private Integer waybillScheme;

    /** 发货网点ID */
    @ApiModelProperty("发货网点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer shipNetId;

    /** 收货网点ID */
    @ApiModelProperty("收货网点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer deliveryNetId;

    /** 线路ID */
    @ApiModelProperty("线路ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer routId;

    /** 节点ID */
    @ApiModelProperty("节点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer nodeId;

    /** 项目ID */
    @ApiModelProperty("项目ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer projectId;

    /** 运单类型 */
    @ApiModelProperty("运单类型")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer waybillType;

    /** 发货方ID */
    @ApiModelProperty("发货方ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer shipId;

    /** 发货方联系人 */
    @ApiModelProperty("发货方联系人")
    private String shipContacts;

    /** 发货方联系电话 */
    @ApiModelProperty("发货方联系电话")
    private String shipContactTel;

    /** 发货方省市区、县ID */
    @ApiModelProperty("发货方省市区、县ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer shipDistrictId;

    /** 发货方详细地址 */
    @ApiModelProperty("发货方详细地址")
    private String shipAddress;

    /** 发货方经度 */
    @ApiModelProperty("发货方经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double shipLng;

    /** 发货方纬度 */
    @ApiModelProperty("发货方纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double shipLat;

    /** 发货方计划发货时间 */
    @ApiModelProperty("发货方计划发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipPlanTime;

    /** 发货方预约发货时间 */
    @ApiModelProperty("发货方预约发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipAppointmentTime;

    /** 发货方提货方式 */
    @ApiModelProperty("发货方提货方式")
    private Integer shipPickUpWay;

    /** 发货方提货费 */
    @ApiModelProperty("发货方提货费")
    private BigDecimal shipPickUpFee;

    /** 收货方ID */
    @ApiModelProperty("收货方ID")
    private Integer deliveryId;

    /** 收货方联系人 */
    @ApiModelProperty("收货方联系人")
    private String deliveryContacts;

    /** 收货方联系电话 */
    @ApiModelProperty("收货方联系电话")
    private String deliveryContactTel;

    /** 收货方区县Id */
    @ApiModelProperty("收货方区县Id")
    private Integer deliveryDistrictId;

    /** 收货方详细地址 */
    @ApiModelProperty("收货方详细地址")
    private String deliveryAddress;

    /** 收货方经度 */
    @ApiModelProperty("收货方经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double deliveryLng;

    /** 收货方纬度 */
    @ApiModelProperty("收货方纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double deliveryLat;

    /** 收货方计划发货时间 */
    @ApiModelProperty("收货方计划发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryPlanTime;

    /** 收货方预约发货时间 */
    @ApiModelProperty("收货方预约发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryAppointmentTime;

    /** 收货方提货方式 */
    @ApiModelProperty("收货方提货方式")
    private Integer deliveryPickUpWay;

    /** 收货方送货费 */
    @ApiModelProperty("收货方送货费")
    private BigDecimal deliveryPickUpFee;

    /** 送货时效要求 */
    @ApiModelProperty("送货时效要求")
    private Integer deliveryTimeReq;

    @ApiModelProperty("是否控货（0否1是）")
    private Integer cargoControl;

    @ApiModelProperty("承运商操作人")
    private String carrierOperateName;

    @ApiModelProperty("运单附件")
    private String billAttach;

    @ApiModelProperty("出库单附件")
    private String outboundAttach;

    @ApiModelProperty("总包装费")
    private String totalPackingFee;

    @ApiModelProperty("总里程费")
    private String totalMileageFee;

    @ApiModelProperty("总运费")
    private String totalCarriageFee;

    @ApiModelProperty("交易总价")
    private String tradeTotalFee;

    @ApiModelProperty("应付总价")
    private String payableTotalFee;

    @ApiModelProperty("调度状态")
    private Integer scheduleStatus;

    @ApiModelProperty("短驳状态")
    private Integer drayageStatus;

    /** 备注 */
    @ApiModelProperty("备注")
    private String remark;

    /** 运单可用状态(0 可用 1 不可用) */
    @ApiModelProperty("运单可用状态(0 可用 1 不可用)")
    private Integer enableStatus;

    /** 控货状态 (1 确认控货 2 放货) */
    @ApiModelProperty("控货状态 (1 确认控货 2 放货)")
    private Integer cargoControlStatus;

}
